From 8cb0551fbd7f970daac433b734d02bcfbefea672 Mon Sep 17 00:00:00 2001 From: robertl Date: Sat, 18 Jul 2009 21:18:36 +0000 Subject: [PATCH] Add Ricoh 500SE support Add TRACK_NEW to XCSV. --- csv_util.c | 14 ++++++++++++-- internal_styles.c | 19 +++++++++++++++++-- style/ricoh.style | 13 +++++++++++++ xcsv_tokens.gperf | 34 ++++++++++++++++++---------------- xcsv_tokens.in | 1 + xmldoc/formats/delbin.xml | 5 ----- xmldoc/formats/garmin_gpi.xml | 2 +- xmldoc/formats/vpl.xml | 1 + 8 files changed, 63 insertions(+), 26 deletions(-) create mode 100644 style/ricoh.style diff --git a/csv_util.c b/csv_util.c index 1eaea9548..bd12e7581 100644 --- a/csv_util.c +++ b/csv_util.c @@ -123,6 +123,7 @@ typedef enum { XT_STREET_ADDR, XT_TIMET_TIME, XT_TRACK_NAME, + XT_TRACK_NEW, XT_URL, XT_URL_LINK_TEXT, XT_YYYYMMDD_TIME @@ -926,7 +927,8 @@ gmsd_init(waypoint *wpt) /* usage: xcsv_parse_val("-123.34", *waypt, *field_map) */ /*****************************************************************************/ static void -xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp) +xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp, + route_head **trk) { char *enclosure = ""; geocache_data *gc_data = NULL; @@ -1169,6 +1171,14 @@ xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp) case XT_ROUTE_NAME: if (csv_route) csv_route->rte_name = csv_stringtrim(s, enclosure, 0); break; + case XT_TRACK_NEW: + if (atoi(s) && csv_track && !QUEUE_EMPTY(&csv_track->Q)) { + *trk = route_head_alloc(); + csv_track = *trk; + + track_add_head(*trk); + } + break; case XT_TRACK_NAME: if (!csv_track) { csv_track = route_head_alloc(); @@ -1313,7 +1323,7 @@ xcsv_data_read(void) */ while (s) { fmp = (field_map_t *) elem; - xcsv_parse_val(s, wpt_tmp, fmp); + xcsv_parse_val(s, wpt_tmp, fmp, &trk); elem = QUEUE_NEXT(elem); diff --git a/internal_styles.c b/internal_styles.c index 3b0539372..61aa51b82 100644 --- a/internal_styles.c +++ b/internal_styles.c @@ -888,6 +888,21 @@ static char openoffice[] = "IFIELD GPS_PDOP, \"\", \"%f\"\n" "IFIELD GPS_SAT, \"\", \"%d\"\n" "IFIELD GPS_FIX, \"\", \"%s\"\n" +; +static char ricoh[] = +"DESCRIPTION Ricoh GPS Log File\n" +"EXTENSION log\n" +"DATATYPE TRACK\n" + +"FIELD_DELIMITER COMMA\n" +"RECORD_DELIMITER NEWLINE\n" + +"IFIELD LON_DECIMAL,\"\",\"%f\"\n" +"IFIELD LAT_DECIMAL,\"\",\"%f\"\n" +"IFIELD ALT_METERS,\"\",\"%f\"\n" +"IFIELD TRACK_NEW,\"\",\"%d\"\n" +"IFIELD GMT_TIME,\"\",\"%d-%m-%Y %H:%M:%S\"\n" + ; static char s_and_t[] = "# gpsbabel XCSV style file\n" @@ -1215,8 +1230,8 @@ static char xmapwpt[] = "IFIELD IGNORE, \"\", \"%-.31s\"\n" "IFIELD DESCRIPTION, \"\", \"%-.78s\"\n" ; -style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap2006", xmap2006 } , { "xmap", xmap } , { "tomtom_itn", tomtom_itn } , { "tomtom_asc", tomtom_asc } , { "tabsep", tabsep } , { "sportsim", sportsim } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "openoffice", openoffice } , { "nima", nima } , { "navigonwpt", navigonwpt } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "kwf2", kwf2 } , { "ktf2", ktf2 } , { "kompass_wp", kompass_wp } , { "kompass_tk", kompass_tk } , { "igo2008_poi", igo2008_poi } , { "iblue747", iblue747 } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "geonet", geonet } , { "garmin_poi", garmin_poi } , { "garmin301", garmin301 } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "cup", cup } , { "csv", csv } , { "cambridge", cambridge } , { "arc", arc } , {0,0}}; -size_t nstyles = 33; +style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap2006", xmap2006 } , { "xmap", xmap } , { "tomtom_itn", tomtom_itn } , { "tomtom_asc", tomtom_asc } , { "tabsep", tabsep } , { "sportsim", sportsim } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "ricoh", ricoh } , { "openoffice", openoffice } , { "nima", nima } , { "navigonwpt", navigonwpt } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "kwf2", kwf2 } , { "ktf2", ktf2 } , { "kompass_wp", kompass_wp } , { "kompass_tk", kompass_tk } , { "igo2008_poi", igo2008_poi } , { "iblue747", iblue747 } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "geonet", geonet } , { "garmin_poi", garmin_poi } , { "garmin301", garmin301 } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "cup", cup } , { "csv", csv } , { "cambridge", cambridge } , { "arc", arc } , {0,0}}; +size_t nstyles = 34; #else /* CSVFMTS_ENABLED */ style_vecs_t style_list[] = {{0,0}}; size_t nstyles = 0; diff --git a/style/ricoh.style b/style/ricoh.style new file mode 100644 index 000000000..11d195984 --- /dev/null +++ b/style/ricoh.style @@ -0,0 +1,13 @@ +DESCRIPTION Ricoh GPS Log File +EXTENSION log +DATATYPE TRACK + +FIELD_DELIMITER COMMA +RECORD_DELIMITER NEWLINE + +IFIELD LON_DECIMAL,"","%f" +IFIELD LAT_DECIMAL,"","%f" +IFIELD ALT_METERS,"","%f" +IFIELD TRACK_NEW,"","%d" +IFIELD GMT_TIME,"","%d-%m-%Y %H:%M:%S" + diff --git a/xcsv_tokens.gperf b/xcsv_tokens.gperf index 76a47fdac..b3991129d 100644 --- a/xcsv_tokens.gperf +++ b/xcsv_tokens.gperf @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.2 */ +/* ANSI-C code produced by gperf version 3.0.1 */ /* Command-line: gperf -L ANSI-C -D -t xcsv_tokens.in */ /* Computed positions: -k'2,4-5,12,$' */ @@ -32,7 +32,7 @@ #line 1 "xcsv_tokens.in" struct xt_mapping {char *name; int xt_token; }; -#define TOTAL_KEYWORDS 73 +#define TOTAL_KEYWORDS 74 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 21 #define MIN_HASH_VALUE 7 @@ -59,7 +59,7 @@ hash (register const char *str, register unsigned int len) 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 0, 154, 0, 0, 10, 55, 15, 50, 35, 154, 10, 40, 20, 0, 25, - 25, 154, 0, 40, 15, 154, 20, 154, 25, 45, + 25, 154, 0, 40, 15, 154, 20, 0, 25, 45, 154, 154, 154, 154, 154, 0, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, @@ -125,6 +125,8 @@ in_word_set (register const char *str, register unsigned int len) {"LAT_DECIMALDIR", XT_LAT_DECIMALDIR}, #line 5 "xcsv_tokens.in" {"ANYNAME", XT_ANYNAME}, +#line 73 "xcsv_tokens.in" + {"TRACK_NEW", XT_TRACK_NEW}, #line 10 "xcsv_tokens.in" {"DESCRIPTION", XT_DESCRIPTION}, #line 22 "xcsv_tokens.in" @@ -153,7 +155,7 @@ in_word_set (register const char *str, register unsigned int len) {"LON_DECIMALDIR", XT_LON_DECIMALDIR}, #line 19 "xcsv_tokens.in" {"GEOCACHE_ISAVAILABLE", XT_GEOCACHE_ISAVAILABLE}, -#line 74 "xcsv_tokens.in" +#line 75 "xcsv_tokens.in" {"URL", XT_URL}, #line 30 "xcsv_tokens.in" {"HEART_RATE", XT_HEART_RATE}, @@ -217,7 +219,7 @@ in_word_set (register const char *str, register unsigned int len) {"LAT_HUMAN_READABLE", XT_LAT_HUMAN_READABLE}, #line 9 "xcsv_tokens.in" {"COUNTRY", XT_COUNTRY}, -#line 73 "xcsv_tokens.in" +#line 74 "xcsv_tokens.in" {"URL_LINK_TEXT", XT_URL_LINK_TEXT}, #line 11 "xcsv_tokens.in" {"EXCEL_TIME", XT_EXCEL_TIME}, @@ -257,23 +259,23 @@ in_word_set (register const char *str, register unsigned int len) {"GEOCACHE_DIFF", XT_GEOCACHE_DIFF}, #line 63 "xcsv_tokens.in" {"PATH_SPEED_MPH", XT_PATH_SPEED_MPH}, -#line 75 "xcsv_tokens.in" +#line 76 "xcsv_tokens.in" {"YYYYMMDD_TIME", XT_YYYYMMDD_TIME} }; static signed char lookup[] = { -1, -1, -1, -1, -1, -1, -1, 0, 1, -1, 2, 3, -1, -1, - 4, -1, -1, 5, -1, -1, -1, 6, -1, 7, -1, 8, -1, 9, - 10, 11, 12, -1, 13, 14, -1, 15, 16, -1, 17, 18, 19, -1, - -1, 20, -1, 21, 22, -1, -1, -1, -1, 23, -1, 24, 25, 26, - 27, -1, 28, -1, 29, 30, -1, 31, -1, 32, 33, -1, 34, 35, - 36, 37, -1, 38, 39, -1, 40, 41, 42, 43, 44, -1, -1, 45, - 46, 47, 48, 49, 50, -1, -1, -1, 51, 52, -1, 53, 54, -1, - -1, 55, -1, -1, 56, 57, -1, -1, 58, -1, 59, 60, 61, -1, - 62, 63, -1, -1, 64, -1, 65, -1, 66, -1, -1, -1, 67, -1, - -1, -1, 68, 69, -1, -1, -1, 70, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 72 + 4, -1, -1, 5, -1, 6, -1, 7, -1, 8, -1, 9, -1, 10, + 11, 12, 13, -1, 14, 15, -1, 16, 17, -1, 18, 19, 20, -1, + -1, 21, -1, 22, 23, -1, -1, -1, -1, 24, -1, 25, 26, 27, + 28, -1, 29, -1, 30, 31, -1, 32, -1, 33, 34, -1, 35, 36, + 37, 38, -1, 39, 40, -1, 41, 42, 43, 44, 45, -1, -1, 46, + 47, 48, 49, 50, 51, -1, -1, -1, 52, 53, -1, 54, 55, -1, + -1, 56, -1, -1, 57, 58, -1, -1, 59, -1, 60, 61, 62, -1, + 63, 64, -1, -1, 65, -1, 66, -1, 67, -1, -1, -1, 68, -1, + -1, -1, 69, 70, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 73 }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) diff --git a/xcsv_tokens.in b/xcsv_tokens.in index 40cbe1fe0..c0c106e7a 100644 --- a/xcsv_tokens.in +++ b/xcsv_tokens.in @@ -70,6 +70,7 @@ STATE, XT_STATE STREET_ADDR, XT_STREET_ADDR TIMET_TIME, XT_TIMET_TIME TRACK_NAME, XT_TRACK_NAME +TRACK_NEW, XT_TRACK_NEW URL_LINK_TEXT, XT_URL_LINK_TEXT URL, XT_URL YYYYMMDD_TIME, XT_YYYYMMDD_TIME diff --git a/xmldoc/formats/delbin.xml b/xmldoc/formats/delbin.xml index 83909bcab..1ee2447c0 100644 --- a/xmldoc/formats/delbin.xml +++ b/xmldoc/formats/delbin.xml @@ -31,8 +31,3 @@ -<<<<<<< delbin.xml - - -======= ->>>>>>> 1.3 diff --git a/xmldoc/formats/garmin_gpi.xml b/xmldoc/formats/garmin_gpi.xml index 07959ba53..db12f0cd7 100644 --- a/xmldoc/formats/garmin_gpi.xml +++ b/xmldoc/formats/garmin_gpi.xml @@ -15,7 +15,7 @@ - Creation timestamp issue: See option sleep !!! + Creation timestamp issue: See the option sleep !!! This module does not support direct transfer of .GPI files to diff --git a/xmldoc/formats/vpl.xml b/xmldoc/formats/vpl.xml index b58ba771c..9723a4164 100644 --- a/xmldoc/formats/vpl.xml +++ b/xmldoc/formats/vpl.xml @@ -9,6 +9,7 @@ 2006 Honda Civic Hybrid + Longging may be enabled by simultaneously holding down the MAP/GUIDE, MENU, and CANCEL -- 2.30.2